package com.tzstcl.sys.user.service;

import com.github.pagehelper.PageInfo;
import com.tzstcl.base.model.AjaxResult;
import com.tzstcl.base.service.BaseService;
import com.tzstcl.sys.user.model.SysUser;
import com.tzstcl.sys.user.model.UserInfo;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 *
 * 作者：guohy
 * 日期：2019年08月08日
 * 说明：用户表Servic
 */
public interface SysUserService extends BaseService<SysUser> {

    /**
    *
    * 批量增加用户表
    * @param sysUserList
    * @author guohy
    * @date 2019年08月08日
    * @return Integer 插入的记录数
    */
    Integer insertBatch(List<SysUser> sysUserList);

    /**
     * @description 根据用户名或密码查询信息
     * @author guohy
     * @date 2019/8/8-17:03
     * @param sysUser
     * @return com.seasoft.sys.user.model.SysUser
     */
    SysUser findByNameOrPass(SysUser sysUser);

    /**
     * @description 新增用户
     * @author guohy
     * @date 2019/8/8-17:08
     * @param sysUser
     * @param ids
     * @return void
     */
    void save(SysUser sysUser, Long[] ids);

    /**
     * @description 删除
     * @author guohy
     * @date 2019/8/8-17:10
     * @param ids
     * @return java.lang.Integer
     */
    Integer delete(String[] ids);

    /**
     * @description 查询用户权限
     * @author guohy
     * @date 2019/8/8-17:11
     * @param id
     * @return java.util.Set<java.lang.String>
     */
    Set<String> queryPermissions(Long id);

    /**
     * @description 根据用户名查询密码
     * @author guohy
     * @date 2019/8/13-14:50
     * @param sysUser
     * @return com.seasoft.sys.user.model.SysUser
     */
    SysUser compareUser(SysUser sysUser);

    PageInfo<UserInfo> selectUserInfoPage(UserInfo userInfo);

    PageInfo<SysUser> accountList(SysUser sysUser);

    /**
     * @description 当前组织的通讯录
     * @author guohy
     * @date 2019/8/30-10:16
     * @param deptId
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String, Object>> getAddressBook(Long deptId);

    /**
     * @description 所属组织下的通讯录
     * @author guohy
     * @date 2019/8/30-10:38
     * @param deptId
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String, Object>> getDeptAddressBook(Long deptId);

    /**
     * @description 获取当前部门下的人员信息
     * @author guohy
     * @date 2019/9/12-16:05
     * @param deptId
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String, Object>> getDeptUserList(Long deptId);

    /**
     * @description 修改密码
     * @author guohy
     * @date 2019/9/17-20:31
     * @param oldPassword
     * @param newPassword
     * @param id
     * @return com.seasoft.base.model.AjaxResult
     */
    AjaxResult updatePassword(String oldPassword, String newPassword, Long id);

    /**
     * @description 根据登录名查询 忽略删除标记
     * @author MQT
     * @date 2020/1/13-11:06
     * @param sysUser
     * @return com.seasoft.sys.user.model.SysUser
     */
    SysUser findByNameIgnoreDelFlag(SysUser sysUser);
}